package com.qcby.chatservice.socket.handle;

import com.qcby.chatservice.common.result.Result;
import com.qcby.chatservice.socket.context.FlowContext;

/**
 * 聊天服务处理
 *
 * @author cong.zhen
 * @date 2023/01/07
 */
public interface ChatServiceHandle {

    /**
     * 状态执行前置动作 校验，装配
     * @param flowContext 即时通讯上下文
     * @return
     */
    Result beforeStateExecute(FlowContext flowContext);


    /**
     * 状态执行动作 入库
     * @param flowContext 即时通讯上下文
     * @return
     */
    Result doStateExecute(FlowContext flowContext);


    /**
     * 状态执行后置动作 通知流转
     * @param flowContext 即时通讯上下文
     * @return
     */
    Result afterStateExecute(FlowContext flowContext);

    /**
     * 状态回滚动作
     * @param flowContext 即时通讯上下文
     * @return
     */
    Result rollBackExecute(FlowContext flowContext);
}
